define([], function() {
    'use strict';
    function MyAjax(){
        this.init();
    }

    /**
     * 设置ajax请求的默认配置
     * @param type
     * @param dataType
     * @param contentType
     */
    MyAjax.prototype.init = function(){
        
    }

    MyAjax.prototype.getXhr = function(){
        var xhr;
        if (window.XMLHttpRequest) {//  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
            xhr = new XMLHttpRequest();
        }
        else {// IE6, IE5 浏览器执行代码
            xhr = new ActiveXObject("Microsoft.XMLHTTP");
        }
        return xhr;
    }

    /**
     * 发送ajax的自定义配置
     * @param type - get/post/head/put/delete/option
     * @param url - 请求的地址
     * @param data - 请求的参数
     * @param dataType - 返回的数据类型，text/json 默认json
     * @param contentType - 请求参数的类型，application/json等
     * @param async - true/false true-异步，false-同步
     * @function done - 请求成功的回调
     * @function fail - 请求失败的回调
     * @function finally - 请求结束的回调
     */
    MyAjax.prototype.ajax = function(options){
        var type = options.type || 'get';
        if(!options.url){
            throw new Error('miss url option');
        }
        var async = typeof options.async === "undefined" ? true : !options.async ? false : true;
        var url = options.url;
        var xhr = this.getXhr();
        xhr.onreadystatechange = function(){
            if(xhr.readyState == 4){
                var responseText = xhr.responseText;
                var status = xhr.status;
                if(options.finally && typeof options.finally === "function"){
                    options.finally(responseText, status);
                }
                var isSuccess = status >= 200 && status < 300 || status === 304;
                if(isSuccess && options.done && typeof options.done === "function"){
                    options.done(responseText, status);
                }else if(!isSuccess && options.fail && typeof options.fail === "function"){
                    options.fail(responseText, status);
                }
            }
        }

        // xhr.setRequestHeader("Content-type","application/json");
        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xhr.open(type, url, async);
        xhr.send();
        return xhr;
    }

    /**
     * 发送ajax的自定义全局配置
     * @param preUrl - 请求url的前缀全局设置
     * @function beforeSend - 请求之前触发的全局方法
     * @function afterDone - 请求成功之后首先执行的全局方法
     * @function afterFail - 请求失败之后首先执行的全局方法
     * @function afterFinally - 请求结束之后首先执行的全局方法，这个在成功，失败的前进行
     */
    MyAjax.prototype.setOptions = function(options){
        
    }

    var myAjax = new MyAjax();

    return myAjax;
});